package com.abewy.android.apps.klyph.core.fql.serializer; import org.json.JSONObject; import com.abewy.android.apps.klyph.core.fql.Location; import com.abewy.android.apps.klyph.core.fql.User; import com.abewy.android.apps.klyph.core.fql.User.Cover; import com.abewy.android.apps.klyph.core.fql.User.Education; import com.abewy.android.apps.klyph.core.fql.User.IdName; import com.abewy.android.apps.klyph.core.fql.User.Relative; import com.abewy.android.apps.klyph.core.fql.User.Work; import com.abewy.android.apps.klyph.core.graph.GraphObject; public class UserDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { User user = new User(); deserializePrimitives(user, data); user.setEducation(new EducationDeserializer().deserializeArray(getJsonArray(data, "education"), Education.class)); user.setWork(new WorkDeserializer().deserializeArray(getJsonArray(data, "work"), Work.class)); user.setPic_cover((Cover) new CoverDeserializer().deserializeObject(getJsonObject(data, "pic_cover"))); user.setCurrent_address((Location) new LocationDeserializer().deserializeObject(getJsonObject(data, "current_address"))); user.setCurrent_location((Location) new LocationDeserializer().deserializeObject(getJsonObject(data, "current_location"))); user.setHometown_location((Location) new LocationDeserializer().deserializeObject(getJsonObject(data, "hometown_location"))); user.setFamily(new RelativeDeserializer().deserializeArray(getJsonArray(data, "family"), Relative.class)); return user; } private static class CoverDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { Cover cover = new Cover(); deserializePrimitives(cover, data); return cover; } } public static class EducationDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { Education education = new Education(); deserializePrimitives(education, data); education.setSchool((IdName) new IdNameDeserializer().deserializeObject(getJsonObject(data, "school"))); education.setYear((IdName) new IdNameDeserializer().deserializeObject(getJsonObject(data, "year"))); education.setConcentration((IdName) new IdNameDeserializer().deserializeObject(getJsonObject(data, "concentration"))); return education; } } public static class WorkDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { Work work = new Work(); deserializePrimitives(work, data); work.setEmployer((IdName) new IdNameDeserializer().deserializeObject(getJsonObject(data, "employer"))); work.setLocation((IdName) new IdNameDeserializer().deserializeObject(getJsonObject(data, "location"))); work.setPosition((IdName) new IdNameDeserializer().deserializeObject(getJsonObject(data, "position"))); return work; } } public static class IdNameDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { IdName idName = new IdName(); deserializePrimitives(idName, data); return idName; } } private static class RelativeDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { Relative relative = new Relative(); deserializePrimitives(relative, data); return relative; } } }